package ai.leinao.notify.core.template;

import ai.leinao.notify.core.enums.NotifyType;
import lombok.NonNull;

/**
 * 模板管理器
 *
 * 统一管理模板
 *
 * @author zhong.wang
 * @date 2025/7/7
 */
public interface TemplateRegistry {
    /**
     * 根据通知类型和模板id获取模板
     *
     * @param notifyType 通知类型
     * @param templateId 模板id
     * @return {@link Template}
     */
    @NonNull
    <T extends Template> T getTemplate(@NonNull NotifyType notifyType, @NonNull String templateId);

    /**
     * 根据通知类型和属性创建模板
     *
     *
     * @param notifyType 通知类型
     * @param properties 属性
     * @return {@link Template}
     */
    @NonNull
    <T extends Template> T createTemplate(@NonNull NotifyType notifyType, @NonNull TemplateProperties properties);
}
